package estoque;

import hibernate.dao.ProdutoDAO;
import hibernate.entity.Produto;
import java.util.List;

import javax.swing.table.AbstractTableModel;

public class ProdutoEstoqueTableModel extends AbstractTableModel{
	
	private final int COL_ID_PRODUTO = 0;
    private final int COL_NOME_PRODUTO = 1;
    private final int COL_MARCA = 2;
    private final int COL_ESTOQUE = 3;
    
    private List<Produto> listaProdutos;
    private ProdutoDAO produtoDAO;
 
    public ProdutoEstoqueTableModel() {
        produtoDAO = new ProdutoDAO(); 
        listaProdutos = produtoDAO.getListaProdutoEstoque();
    }
 
    public int getRowCount() {
        return listaProdutos.size();
    }
 
    public int getColumnCount() {
        return 4;
    }
 
    @Override
    public String getColumnName(int column) {
    	if (column == COL_ID_PRODUTO) {
            return "codigo";
        } else if (column == COL_NOME_PRODUTO) {
            return "Nome";
        } else if (column == COL_MARCA) {
            return "Marca";
        } else if (column == COL_ESTOQUE) {
            return "Estoque";
        } 
        return "";
    }
 
    @Override
    public Class getColumnClass(int columnIndex) {

    	if (columnIndex == COL_ID_PRODUTO) {
            return Long.class;
        } else if (columnIndex == COL_NOME_PRODUTO) {
            return String.class;
        } else if (columnIndex == COL_MARCA) {
            return String.class;
        } else if (columnIndex == COL_ESTOQUE) {
            return Integer.class;
        } 
        return String.class;
    }
 
    public Object getValueAt(int rowIndex, int columnIndex) {

    	Produto produto = listaProdutos.get(rowIndex);
        
       	if (columnIndex == COL_ID_PRODUTO) {
            return produto.getId();
        } else if (columnIndex == COL_NOME_PRODUTO) {
            return produto.getNomeProduto();
        } else if (columnIndex == COL_MARCA) {
            return produto.getMarca();
        } else if (columnIndex == COL_ESTOQUE) {
            return produto.getQuantidadeEstoque();
        } 
        return "";
    }    

    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {

    	Produto produto = listaProdutos.get(rowIndex);
    	
        if (columnIndex == COL_ID_PRODUTO) {
           produto.setId(Long.parseLong(aValue.toString()));
        } else if (columnIndex == COL_NOME_PRODUTO) {
        	produto.setNomeProduto(aValue.toString());
        } else if (columnIndex == COL_MARCA) {
        	produto.setMarca(aValue.toString());
        } else if (columnIndex == COL_ESTOQUE) {
            produto.setQuantidadeEstoque(Integer.parseInt(aValue.toString()));
        } 
        fireTableDataChanged();
    }
}
